package br.com.canvasForAll.model.dao;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.Query;

import br.com.canvasForAll.model.entity.Postit;
import br.com.canvasForAll.model.entity.Subatividade;
import br.com.canvasForAll.model.generic.dao.GenericCrudDao;
import br.com.canvasForAll.model.repository.SubatividadeRepository;

@Stateless
@Named(value = "subatividadeRepository")
public class SubatividadeDao extends GenericCrudDao<Subatividade> implements
		SubatividadeRepository {

	public SubatividadeDao() {
		super(Subatividade.class);
	}

	@Override
	public Subatividade obterId(Long entityId) throws Exception {
		return super.obterPorId(entityId);
	}

	@Override
	public List<Subatividade> obterExemplo(String namedQuery, Map<String, Object> parametros) throws Exception {
		return super.obterPorExemplo(namedQuery, getParametros());
	}

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Subatividade> obterSubatividadePostit(Postit postit) throws Exception {
		String sql = "SELECT s FROM Subatividade s WHERE s.postit = :postit ORDER BY s.dataUltimaAtualizacao";
		Query query = em.createQuery(sql);
		query.setParameter("postit", postit);
		Collection<Subatividade> lista = query.getResultList();
		
		return lista;
	}

}
